color21 2.2.0
Loading...
Searching...
No Matches
color21


Color 21 Click

Color 21 Click demo application is developed using the NECTO Studio, ensuring compatibility with mikroSDK's open-source libraries and tools. Designed for plug-and-play implementation and testing, the demo is fully compatible with all development, starter, and mikromedia boards featuring a mikroBUS™ socket.


Click Library

  • Author : Stefan Filipovic
  • Date : Sep 2025.
  • Type : I2C type

Software Support

Example Description

This example demonstrates the use of Color 21 Click by reading and displaying the values from all 14 channels.

Example Libraries

  • MikroSDK.Board
  • MikroSDK.Log
  • Click.Color21

Example Key Functions

  • color21_cfg_setup This function initializes Click configuration structure to initial values.
    void color21_cfg_setup(color21_cfg_t *cfg)
    Color 21 configuration object setup function.
    Color 21 Click configuration object.
    Definition color21.h:375
  • color21_init This function initializes all necessary pins and peripherals used for this Click board.
    err_t color21_init ( color21_t *ctx, color21_cfg_t *cfg );
    err_t color21_init(color21_t *ctx, color21_cfg_t *cfg)
    Color 21 initialization function.
    Color 21 Click context object.
    Definition color21.h:354
  • color21_default_cfg This function executes a default configuration of Color 21 Click board.
    err_t color21_default_cfg(color21_t *ctx)
    Color 21 default configuration function.
  • color21_read_data This function checks if the spectral measurement data is ready and then reads data from all channels along with the STATUS and ASTATUS bytes.
    err_t color21_read_data ( color21_t *ctx, color21_data_t *data_out );
    err_t color21_read_data(color21_t *ctx, color21_data_t *data_out)
    Color 21 read data function.
    Color 21 Click data object.
    Definition color21.h:325

Application Init

Initializes the driver and performs the Click default configuration.

void application_init ( void )
{
log_cfg_t log_cfg;
color21_cfg_t color21_cfg;
LOG_MAP_USB_UART( log_cfg );
#ifdef INTERFACE_LOGGER_UART
log_cfg.is_interrupt = false;
#endif
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
// Click initialization.
color21_cfg_setup( &color21_cfg );
COLOR21_MAP_MIKROBUS( color21_cfg, MIKROBUS_1 );
if ( I2C_MASTER_ERROR == color21_init( &color21, &color21_cfg ) )
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
if ( COLOR21_ERROR == color21_default_cfg ( &color21 ) )
{
log_error( &logger, " Default configuration." );
for ( ; ; );
}
log_info( &logger, " Application Task " );
}
@ COLOR21_ERROR
Definition color21.h:395
#define COLOR21_MAP_MIKROBUS(cfg, mikrobus)
MikroBUS pin mapping.
Definition color21.h:310
void application_init(void)
Definition main.c:29

Application Task

Waits for the spectral measurement complete flag and then reads data from all 14 channels in 3 cycles, and displays the results on the USB UART every 300ms approximately.

void application_task ( void )
{
color21_data_t color_data;
if ( COLOR21_OK == color21_read_data ( &color21, &color_data ) )
{
log_printf ( &logger, " STATUS: 0x%.2X\r\n", ( uint16_t ) color_data.status );
log_printf ( &logger, " ASTATUS: 0x%.2X\r\n", ( uint16_t ) color_data.astatus );
log_printf ( &logger, " ------- Cycle 1 -------\r\n" );
log_printf ( &logger, " Channel FZ: %u\r\n", color_data.ch_fz );
log_printf ( &logger, " Channel FY: %u\r\n", color_data.ch_fy );
log_printf ( &logger, " Channel FXL: %u\r\n", color_data.ch_fxl );
log_printf ( &logger, " Channel NIR: %u\r\n", color_data.ch_nir );
log_printf ( &logger, " Channel 2xVIS_1: %u\r\n", color_data.ch_2x_vis_1 );
log_printf ( &logger, " Channel FD_1: %u\r\n", color_data.ch_fd_1 );
log_printf ( &logger, " ------- Cycle 2 -------\r\n" );
log_printf ( &logger, " Channel F2: %u\r\n", color_data.ch_f2 );
log_printf ( &logger, " Channel F3: %u\r\n", color_data.ch_f3 );
log_printf ( &logger, " Channel F4: %u\r\n", color_data.ch_f4 );
log_printf ( &logger, " Channel F6: %u\r\n", color_data.ch_f6 );
log_printf ( &logger, " Channel 2xVIS_2: %u\r\n", color_data.ch_2x_vis_2 );
log_printf ( &logger, " Channel FD_2: %u\r\n", color_data.ch_fd_2 );
log_printf ( &logger, " ------- Cycle 3 -------\r\n" );
log_printf ( &logger, " Channel F1: %u\r\n", color_data.ch_f1 );
log_printf ( &logger, " Channel F5: %u\r\n", color_data.ch_f5 );
log_printf ( &logger, " Channel F7: %u\r\n", color_data.ch_f7 );
log_printf ( &logger, " Channel F8: %u\r\n", color_data.ch_f8 );
log_printf ( &logger, " Channel 2xVIS_3: %u\r\n", color_data.ch_2x_vis_3 );
log_printf ( &logger, " Channel FD_3: %u\r\n", color_data.ch_fd_3 );
log_printf ( &logger, " -----------------------\r\n\n" );
Delay_ms ( 300 );
}
}
@ COLOR21_OK
Definition color21.h:394
void application_task(void)
Definition main.c:68
uint16_t ch_f4
Definition color21.h:336
uint8_t astatus
Definition color21.h:327
uint16_t ch_fz
Definition color21.h:328
uint16_t ch_2x_vis_3
Definition color21.h:344
uint16_t ch_fd_2
Definition color21.h:339
uint16_t ch_f6
Definition color21.h:337
uint16_t ch_2x_vis_2
Definition color21.h:338
uint16_t ch_fd_1
Definition color21.h:333
uint16_t ch_f2
Definition color21.h:334
uint16_t ch_f3
Definition color21.h:335
uint16_t ch_fxl
Definition color21.h:330
uint16_t ch_fd_3
Definition color21.h:345
uint16_t ch_fy
Definition color21.h:329
uint16_t ch_2x_vis_1
Definition color21.h:332
uint16_t ch_nir
Definition color21.h:331
uint16_t ch_f1
Definition color21.h:340
uint16_t ch_f8
Definition color21.h:343
uint16_t ch_f7
Definition color21.h:342
uint8_t status
Definition color21.h:326
uint16_t ch_f5
Definition color21.h:341

Application Output

This Click board can be interfaced and monitored in two ways:

  • Application Output - Use the "Application Output" window in Debug mode for real-time data monitoring. Set it up properly by following this tutorial.
  • UART Terminal - Monitor data via the UART Terminal using a USB to UART converter. For detailed instructions, check out this tutorial.

Additional Notes and Information

The complete application code and a ready-to-use project are available through the NECTO Studio Package Manager for direct installation in the NECTO Studio. The application code can also be found on the MIKROE GitHub account.